﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using NIEN_LUAN.Db;
using System.Threading;
using System.Windows.Forms;


namespace NIEN_LUAN
{
    public partial class FormQuanLyMatHang : Form
    {
        private DataContentDataContext db = new DataContentDataContext();
        public MATHANG MatHangadd = new MATHANG();
        public FormQuanLyMatHang()
        {
            InitializeComponent();
        }

        private void btnThoatMatHang_Click(object sender, EventArgs e)
        {
            this.Close();
        }                      

        private void FormQuanLyMatHang_Load(object sender, EventArgs e)
        {
            this.dataGridViewDSMH.AutoGenerateColumns = false;

            var mathang = (from mh in db.MATHANGs
                           orderby mh.MaHang ascending
                           select mh
                          ).ToList();

            this.mATHANGBindingSource.DataSource = mathang;
            this.dataGridViewDSMH.DataSource = this.mATHANGBindingSource;
        }

        private void toolStripButtonThem_Click(object sender, EventArgs e)
        {
            Form frmThemCTMH = new FormChiTietMatHang(this);
            var kq = frmThemCTMH.ShowDialog();
            if (kq == DialogResult.OK)
            {
                this.mATHANGBindingSource.Add(MatHangadd);
                MessageBox.Show("Thêm thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

        private void toolStripButtonThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        public MATHANG MatHangSua = new MATHANG();        
        private void toolStripButtonSua_Click(object sender, EventArgs e)
        {
            var mathang = this.mATHANGBindingSource.Current as MATHANG;
            if (mathang != null)
            {
                MatHangSua = mathang;
                var kq = new FormChiTietMatHang(MatHangSua, this).ShowDialog();
                if (kq == DialogResult.OK)
                {
                    mathang.TenHang = MatHangSua.TenHang;
                    mathang.MaDonViTinh = MatHangSua.MaDonViTinh;
                    mathang.MaLoaiHang = MatHangSua.MaLoaiHang;
                    mathang.SoLuongHienCo = MatHangSua.SoLuongHienCo.Value;
                    mathang.GiaBan = MatHangSua.GiaBan.Value;
                    mathang.GiaNhap = MatHangSua.GiaNhap.Value;

                    this.mATHANGBindingSource.ResetCurrentItem();
                    this.mATHANGBindingSource.ResetBindings(true);
                    MessageBox.Show("Đã cập nhật dữ liệu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
            } 
        }

        private void toolStripButtonXoa_Click(object sender, EventArgs e)
        {                      
            var mathang = this.mATHANGBindingSource.Current as MATHANG;
            if (mathang != null)
            {
                var chungtu = (from m in db.CHITIETCHUNGTUs
                               where m.MaHang == mathang.MaHang
                               select m).Count();
                if (chungtu > 0)
                {
                    MessageBox.Show("Mặt hàng này tồn tại trong chứng từ, không thể xóa");
                    return;
                }
                var phieunhap = (from m in db.CHITIETPHIEUNHAPs
                                 where m.MaHang == mathang.MaHang
                                 select m).Count();
                if (phieunhap > 0)
                {
                    MessageBox.Show("Mặt hàng này tồn tại trong phiếu nhập, không thể xóa");
                    return;
                }
                var tl = MessageBox.Show("Bạn chắc chắn xóa?", "Cảnh báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (tl == DialogResult.Yes)
                {
                    try {                        
                        db.MATHANGs.DeleteOnSubmit(mathang);
                        db.SubmitChanges();
                        this.mATHANGBindingSource.RemoveCurrent();
                        MessageBox.Show("Xóa thành công!");
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Đã có lỗi khi thực hiện thao tác này : Chi tiết lỗi "+ex.Message);
                        return;
                    }
                }


            }
            else
            {
                MessageBox.Show("Chọn hàng cần xóa");

            }           
        }

        private void toolStripButtonIn_Click(object sender, EventArgs e)
        {
            Form frmthongkehangton = new FormReportMatHang(this);
            frmthongkehangton.ShowDialog();
        }
    }
}
